/*
 * @Author: wangding
 * @Date: 2020-10-08 17:14:45
 * @LastEditTime: 2021-03-29 18:12:24
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \solaxcloud\vue.config.js
 */
const path = require('path')
const CompressionPlugin = require('compression-webpack-plugin');
const Timestamp = new Date().getTime();
// const { truncate } = require('fs');
// const productionGzipExtensions = ['js', 'css'];

function resolve(dir) {
    return path.join(__dirname, '.', dir);
}
module.exports = {
    // pluginOptions: {
    //     'style-resources-loader': {
    //         preProcessor: 'less',
    //         patterns: [
    //             path.resolve(__dirname, "./src/assets/css/skin.less") //需要自行添加，这里的路径不要写错了
    //         ]
    //     }
    // },

    productionSourceMap: false,
    devServer: {
        headers: {
            //因为qiankun内部请求都是fetch来请求资源，所以子应用必须允许跨域
            'Access-Control-Allow-Origin': '*'
        },
        proxy: {
            '/proxy': { //这里最好有一个 /
                //https://www.solaxcloud.com:4443/proxy/,
                target: 'https://www.solaxcloud.com:9443', // 服务器端接口地址
                ws: true, //如果要代理 websockets，配置这个参数
                // 如果是https接口，需要配置这个参数
                changeOrigin: true, //是否跨域
                secure: false,
                headers: {
                    Referer: 'http://127.0.0.1:8080'
                },
                pathRewrite: {
                    '^/proxy': '/'
                }
            },
            '/phoebus': { //这里最好有一个 /
                // http://solax02:8080/phoebus
                //https://www.solaxcloud.com:4443/proxy/,
                // http://10.5.0.121:8081/phoebus
                //国内 https://www.solaxcloud.com/phoebus
                //国外 https://www.eu.solaxcloud.com/phoebus
                //国内测试 http://www.solaxcloud.com:5555/phoebus
                //国外测试 https://pages.solaxcloud.com:4443/phoebus
                target: process.env.VUE_APP_DOWNLOAD_PROXY, // 服务器端接口地址
                // ws: true, //如果要代理 websockets，配置这个参数
                // 如果是https接口，需要配置这个参数
                changeOrigin: true, //是否跨域
                pathRewrite: {
                    '^/phoebus': '/'
                }
            },
            // '/setApp': { //这里最好有一个 /
            //     // http://solax02:8080/phoebus
            //     //https://www.solaxcloud.com:4443/proxy/,
            //     // http://10.5.0.121:8081/phoebus
            //     //国内 https://www.solaxcloud.com/phoebus
            //     //国外 https://www.eu.solaxcloud.com/phoebus
            //     //国内测试1 http://www.solaxcloud.com:5555/phoebus
            //     //国内测试2 https://www.solaxcloud.com:4443/phoebus
            //     //国外测试 https://pages.solaxcloud.com:4443/phoebus
            //     target: 'https://www.solaxcloud.com', // 服务器端接口地址
            //     // ws: true, //如果要代理 websockets，配置这个参数
            //     // 如果是https接口，需要配置这个参数
            //     changeOrigin: true, //是否跨域
            //     pathRewrite: {
            //         '^/setApp': '/'
            //     }
            // },
        },
        port: 8080
    },
    //ie兼容，此配置主要用作npm引入的依赖
    chainWebpack: config => {
        if (process.env.NODE_ENV === 'production') {
            config.output.filename('js/[name].' + Timestamp + '.js').end();
            config.output.chunkFilename('js/[name].' + Timestamp + '.js').end();
        }
        config.plugins.delete('preload')
        config.plugins.delete('prefetch')
        config.module.rule('compile')
            .test(/\.js$/)
            .include
            .add(resolve('src'))
            .add(resolve('test'))
            .add(resolve('node_modules/webpack-dev-server/client'))
            .add(resolve('node_modules'))
            .end()
            .use('babel')
            .loader('babel-loader')
            .options({
                presets: [
                    ['@babel/preset-env', {
                        modules: false
                    }]
                ]
            });
        config.module.rule('images')
            .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
            .use('image-webpack-loader')
            .loader('image-webpack-loader')
            .options({ bypassOnDebug: true })
    },
    css: { extract: false, sourceMap: false },
    configureWebpack: (config) => {
        config.entry.app = ["babel-polyfill", "./src/main.js"];
        if (process.env.NODE_ENV === 'production') {
            config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
            return {
                plugins: [new CompressionPlugin({
                    test: /\.js$|\.html$|\.css/, // 匹配的文件名
                    threshold: 10240, // 超过10K，进行gzip压缩
                    deleteOriginalAssets: false // 是否删除原文件
                })],
                externals: {
                    // vue: 'Vue',
                    // 'vue-router': 'VueRouter',
                    // 'element-ui': 'ELEMENT',
                    // "moment": "moment",
                    // 'echarts': 'echarts',
                    // 'axios': 'axios',
                    // 'vuex': 'Vuex'
                },
            }
        } else {
            return {
                externals: {
                    // vue: 'Vue',
                    // 'vue-router': 'VueRouter',
                    // 'element-ui': 'ELEMENT',
                    // "moment": "moment",
                    // 'echarts': 'echarts',
                    // 'axios': 'axios',
                    // 'vuex': 'Vuex'
                    //main.js忽略以上组件
                },
            }
        }

    }

}